// src/api/bookmark/bookmark.ts
import request from '@/utils/request'

/**
 * 新增收藏
 * @param {Object} data 收藏数据
 * @param {string} data.title 网页标题
 * @param {string} data.url 网页链接
 * @param {string} data.logoUrl logo地址
 * @param {number} data.type 网页类型(1-视频,2-博客,3-音乐,4-其他)
 * @param {string} data.description 描述信息
 * @param {string} data.tags 标签
 * @returns {Promise}
 */
export function createBookmark(data) {
  return request({
    url: '/api/bookmarks',
    method: 'post',
    data,
  })
}

/**
 * 修改收藏
 * @param {number} id 收藏ID
 * @param {Object} data 收藏数据
 * @param {string} data.title 网页标题
 * @param {string} data.logoUrl logo地址
 * @param {number} data.type 网页类型
 * @param {string} data.description 描述信息
 * @param {string} data.tags 标签
 * @returns {Promise}
 */
export function updateBookmark(id, data) {
  return request({
    url: `/api/bookmarks/${id}`,
    method: 'put',
    data,
  })
}

/**
 * 删除收藏
 * @param {number} id 收藏ID
 * @returns {Promise}
 */
export function deleteBookmark(id) {
  return request({
    url: `/api/bookmarks/${id}`,
    method: 'delete',
  })
}

/**
 * 批量删除收藏
 * @param {string} ids 收藏ID列表，逗号分隔
 * @returns {Promise}
 */
export function batchDeleteBookmarks(ids) {
  return request({
    url: '/api/bookmarks',
    method: 'delete',
    params: { ids },
  })
}

/**
 * 获取收藏详情
 * @param {number} id 收藏ID
 * @returns {Promise}
 */
export function getBookmarkDetail(id) {
  return request({
    url: `/api/bookmarks/No/${id}`,
    method: 'get',
  })
}

/**
 * 分页查询收藏
 * @param {Object} params 查询参数
 * @param {number} params.page 页码，默认1
 * @param {number} params.size 每页大小，默认10
 * @param {number} params.type 网页类型，可选
 * @param {string} params.keyword 关键词，可选
 * @param {string} params.sortBy 排序字段，默认create_time
 * @param {string} params.sortOrder 排序方向，默认desc
 * @returns {Promise}
 */
export function getBookmarkList(params) {
  return request({
    url: '/api/bookmarks/No',
    method: 'get',
    params,
  })
}

/**
 * 获取收藏统计
 * @returns {Promise}
 */
export function getBookmarkStatistics() {
  return request({
    url: '/api/bookmarks/No/statistics',
    method: 'get',
  })
}

/**
 * 切换置顶状态
 * @param {number} id 收藏ID
 * @returns {Promise}
 */
export function toggleBookmarkTop(id) {
  return request({
    url: `/api/bookmarks/${id}/toggle-top`,
    method: 'put',
  })
}

// 收藏类型枚举
export const BookmarkType = {
  VIDEO: 1, // 视频
  BLOG: 2, // 博客
  MUSIC: 3, // 音乐
  OTHER: 4, // 其他
}

// 类型名称映射
export const BookmarkTypeName = {
  [BookmarkType.VIDEO]: '视频',
  [BookmarkType.BLOG]: '博客',
  [BookmarkType.MUSIC]: '音乐',
  [BookmarkType.OTHER]: '其他',
}

// 类型标签样式映射
export const BookmarkTypeTagType = {
  [BookmarkType.VIDEO]: 'danger', // 视频 - 红色
  [BookmarkType.BLOG]: 'success', // 博客 - 绿色
  [BookmarkType.MUSIC]: 'warning', // 音乐 - 橙色
  [BookmarkType.OTHER]: 'info', // 其他 - 灰色
}
